SessionObjectReferenceImpl{
  ejbName=descriptor.getEjbName();
  final Map<String,ServiceName> viewServices=new HashMap<String,ServiceName>();
  for (  Map.Entry<Class<?>,ServiceName> entry : descriptor.getViewServices().entrySet()) {
    final Class<?> viewClass=entry.getKey();
    if (viewClass != null) {
      final Set<Class<?>> seen=new HashSet<Class<?>>();
      final Set<Class<?>> toProcess=new HashSet<Class<?>>();
      toProcess.add(viewClass);
      while (!toProcess.isEmpty()) {
        Iterator<Class<?>> it=toProcess.iterator();
        final Class<?> clazz=it.next();
        seen.add(clazz);
        viewServices.put(clazz.getName(),entry.getValue());
        final Class<?> superclass=clazz.getSuperclass();
        if (superclass != Object.class && superclass != null && !seen.contains(superclass)) {
          toProcess.add(superclass);
        for (        Class<?> iface : clazz.getInterfaces()) {
          if (!seen.contains(iface)) {
            toProcess.add(iface);
  this.viewServices=viewServices;
}
getBusinessObject{
  if (viewServices.containsKey(businessInterfaceType.getName())) {
    final ServiceController<?> serviceController=currentServiceContainer().getRequiredService(viewServices.get(businessInterfaceType.getName()));
    final ComponentView view=(ComponentView)serviceController.getValue();
    try {
      return (S)view.createInstance().getInstance();
 catch (    Exception e) {
      throw new RuntimeException(e);
 else {
    throw WeldMessages.MESSAGES.viewNotFoundOnEJB(businessInterfaceType.getName(),ejbName);
}
remove{ }
isRemoved{ }
currentServiceContainer{
  return AccessController.doPrivileged(new PrivilegedAction<ServiceContainer>(){
      return CurrentServiceContainer.getServiceContainer();
}
run{
  return CurrentServiceContainer.getServiceContainer();
}
